www.gusucode.com > RQCMS PHP文章管理系统 v2.3PHP源码程序 > RQCMS PHP文章管理系统 v2.3/rqcms_v2.3/rqcms_v2.3/core/manager/article.php
<?php include RQ_CORE.'/include/article.php'; include RQ_CORE.'/include/tag.php'; include RQ_CORE.'/library/func.convert.php'; if(empty($action)) $action='list'; if(RQ_POST) { $article=isset($_POST['article'])?$_POST['article']:array(); $content=isset($_POST['content'])?$_POST['content']:array(); $article['modified']=$timestamp; $attachments=getAttach(); $attcount=count($attachments); $article['attachments']=$attcount; if(in_array($action,array('add','mod'))) { $article['title'] = trim($article['title']); $article['cateid'] = intval($article['cateid']); $article['keywords'] = trim($article['keywords']); $article['stick'] = isset($article['stick'])?intval($article['stick']):0; $article['dateline'] = isset($article['edittime'])?getDateLine():$timestamp; $tags = getTagArr(trim($article['tag'])); $attachments = '';//一个序列化的结果,附件名,Id,大小 $attachInfo=array();// $article['tag']=!empty($tags)?implode(',',$tags):''; saveCookie(); } $attachments=array(); switch($action) { case 'add': if(empty($article['title'])) redirect('标题不得为空',$admin_url.'?file=article&action=add'); if(empty($content['content'])) redirect('内容不得为空',$admin_url.'?file=article&action=add'); // 插入数据部分 $addsql="INSERT INTO ".DB_PREFIX."article set ".getJoinSql($article); $DB->query($addsql); $articleid = $DB->insert_id(); if(!$article['url']) $DB->query('update '.DB_PREFIX."article set url='$articleid' where aid=$articleid"); if($attachments&&is_array($attachments)) { $fileidarr=array(); foreach($attachments as $key=>$attachment) { $DB->unbuffered_query("Insert into ".DB_PREFIX."attachment (`articleid`,`dateline`,`filename`,`filetype`,`filesize`,`filepath`,`isimage`) values ('$articleid','$dateline','$attachment[filename]','$attachment[filetype]','$attachment[filesize]','$attachment[filepath]','$attachment[isimage]')"); $attachments[$key]['aid']=$DB->insert_id(); $fileidarr[$attachments[$key]['localid']]=$attachments[$key]['aid']; } foreach($fileidarr as $localid=>$fileid) { if($content!='') $content=str_replace('[localfile='.$localid.']','[attach='.$fileid.']',$content); } } $content['articleid']=$articleid; $cindex=ceil($articleid/500000); $tablename=DB_PREFIX."content{$cindex}"; if($cindex>1&&$articleid%500000<5) { $tables=GetTables(); if(!in_array($tablename,$tables)) { $DB->query("CREATE table {$tablename} select * from `rqcms_1_content1` where 1>2;ALTER TABLE `{$tablename}` ADD UNIQUE (`articleid`)"); } } $DB->query("Insert into ".DB_PREFIX."content{$cindex} set ".getJoinSql($content)); //添加tags modtag('',$article['tag'],$articleid); clearCookie(); redirect('添加文章成功', $admin_url.'?file=article&action=add'); break; case 'mod'://修改文章 $aid=intval($_POST['aid']); $old=$DB->fetch_first('Select * from '.DB_PREFIX."article where aid=$aid"); if(!$old) redirect('不存在的记录',$admin_url.'?file=article&action=list'); if(empty($article['title'])) redirect('标题不得为空',$admin_url.'?file=article&action=mod&aid='.$aid); if(empty($content['content'])) redirect('内容不得为空',$admin_url.'?file=article&action=mod&aid='.$aid); $oldtag=$old['tag']; //附件先处理 $attachments=getAttach(); $oldattach=array(); $aquery=$DB->query('select * from '.DB_PREFIX."attachment where articleid=$aid"); while($adb=$DB->fetch_array($aquery)) { $oldattach[]=$adb; } $oldattachids=array(); foreach($oldattach as $k=>$v) { $oldattachids[]=$v['aid']; } $keepattach=isset($_POST['keep'])?$_POST['keep']:array(); if(!empty($keepattach)&&is_array($keepattach)&&count($keepattach)<count($oldattachids)) { $diff=array_diff($oldattachids,$keepattach); foreach($diff as $key=>$attid) { foreach($attachments as $k=>$v) { foreach($oldattach as $o=>$d) { if($d['aid']==$attid)//删除的是这条记录 { if($d['filename']==$v['filename'])//这里是就是更新了. { $DB->query("update ".DB_PREFIX."attachment set `filesize`='$attachment[filesize]',`filepath`='$attachment[filepath]' where articleid=$aid and aid=$attid"); $oldattach[o]=$attachments[$v]; $oldattach[o]['aid']=$attid; unset($attachments[$v]); unset($diff[$key]); break; } } } } } $diffids=implode(',',$diff); if($diffids) { $dquery=$DB->query('select * from '.DB_PREFIX."attachment where aid in ($diffids) and articleid=$aid"); while($dfetch=$DB->fetch_array($dquery)) { $filepath=RQ_DATA.'/files/'.$dfetch['filepath']; if(file_exists($filepath)) @unlink($filepath); $thumbpath=RQ_DATA.'/files/'.$dfetch['thumb_filepath']; if(file_exists($filepath)) @unlink($thumbpath); } $DB->query('Delete from '.DB_PREFIX."attachment where aid in ($diffids) and articleid=$aid"); } } if($attachments) { $fileidarr=array(); foreach($attachments as $attachment) { $DB->unbuffered_query("Insert into ".DB_PREFIX."attachment (`articleid`,`dateline`,`filename`,`filetype`,`filesize`,`filepath`,`isimage`,`modified`) values ('$aid','$dateline','$attachment[filename]','$attachment[filetype]','$attachment[filesize]','$attachment[filepath]','$attachment[isimage]','$timestamp')"); $attachment['aid']=$DB->insert_id(); $fileidarr[$attachment['localid']]=$attachment['aid']; unset($attachment['filepath']); unset($attachment['thumb_filepath']); } foreach($fileidarr as $localid=>$fileid) { if($content['content']!='') $content['content']=str_replace('[localfile='.$localid.']','[attach='.$fileid.']',$content['content']); } } $attach=$DB->fetch_first('select count(*) from '.DB_PREFIX."attachment where articleid=$aid"); $attcount=$attach['count(*)']; // 插入数据部分 $DB->query("Update ".DB_PREFIX."article set ".getJoinSql($article)." where aid=$aid"); $cindx=ceil($aid/500000); $DB->query("Update ".DB_PREFIX."content{$cindx} set ".getJoinSql($content)." where `articleid`='$aid'"); //添加tags modtag($oldtag,$article['tag'],$aid); clearCookie(); stick_recache(); latest_recache(); redirect('修改文章成功', $admin_url.'?file=article&action=list'); break; case 'domore': if(isset($_POST['aids'])&&is_array($_POST['aids'])) { $aids=implode_ids($_POST['aids']); $aquery=$DB->query('Select aid from '.DB_PREFIX."article where aid in ($aids)"); $aidarr=array(); while($ainfo=$DB->fetch_array($aquery)) { $aidarr[]=$ainfo['aid']; } $aids=implode_ids($aidarr); if(in_array($do,array('delete','move'))) { $query=$DB->query('Select * from '.DB_PREFIX."article where aid in ($aids)"); while($article=$DB->fetch_array($query)) { $articledb[]=$article; } } else { switch($do) { case 'dodelete': $articlequery=$DB->query('select aid,tag from '.DB_PREFIX."article where aid in ($aids) "); while($articledb=$DB->fetch_array($articlequery)) { modtag($articledb['tag'],'',$articledb['aid']); } $DB->query('delete from '.DB_PREFIX."article where aid in ($aids) "); $tableaids=array(); foreach($aidarr as $delaid) { $cindex=ceil($delaid/500000); $tableaids[$cindex][]=$delaid; } foreach($tableaids as $table=>$delarr) { $delids=implode_ids($delarr); $DB->query('delete from '.DB_PREFIX."content{$table} where articleid in ($delids)"); } $DB->query('delete from '.DB_PREFIX."attachment where articleid in ($aids) "); stick_recache(); redirect('您选择的文章已成功删除', $admin_url.'?file=article&action=list'); break; case 'domove': $cid=$_POST['cid']; $cateinfo=$DB->fetch_first('select * from '.DB_PREFIX."category where cid='$cid' "); if($cateinfo) { $DB->query('update '.DB_PREFIX."article set cateid='$cid' where aid in ($aids) "); stick_recache(); latest_recache(); redirect('您选择的文章成功移动', $admin_url.'?file=article&action=list&cid='.$cid.($view?'&view='.$view:'')); } else redirect('您选择的栏目不存在', $admin_url.'?file=article&action=list'); break; } } } else redirect('请选择要操作的文章', $admin_url.'?file=article&action=list'); break; case 'list': if ($do == 'search') { $searchsql='Select a.*,c.cid,c.name as cname from '.DB_PREFIX.'article a,'.DB_PREFIX."category c where c.cid=a.cateid"; $searchfield=$_POST['searchfield']; $keywords = !empty($_POST['keywords'])?trim($_POST['keywords']):''; if ($keywords) { $keywords = str_replace("_","\_",$keywords); $keywords = str_replace("%","\%",$keywords); if(preg_match("(AND|\+|&|\s)", $keywords) && !preg_match("(OR|\|)", $keywords)) { $andor = ' AND '; $sqltxtsrch = '1'; $keywords = preg_replace("/( AND |&| )/is", "|", $keywords); } else { $andor = ' OR '; $sqltxtsrch = '0'; $keywords = preg_replace("/( OR |\|)/is", "|", $keywords); } $keywords = str_replace('*', '%', addcslashes($keywords, '%_')); foreach(explode("|", $keywords) AS $text) { $text = trim($text); if($text) { $sqltxtsrch .= $andor; if($searchfield) { $sqltxtsrch .= "(a.".$searchfield." LIKE '%".$text."%')"; } else { $sqltxtsrch .= "(a.excerpt LIKE '%".$text."%' OR a.title LIKE '%".$text."%' OR a.tag LIKE '%".$text."%' OR a.keywords LIKE '%".$text."%' OR a.url LIKE '%".$text."%' OR a.keywords LIKE '%".$text."%')"; } doAction('admin_article_search_changesql'); } } $searchsql .= " AND ($sqltxtsrch)"; } if(!empty($_POST['cateid'])) { $searchsql .= " AND a.cateid='".intval($_POST['cateid'])."'"; } $searchsql .= !empty($_POST['startdate']) ? " AND dateline < '".strtotime($_POST['startdate'])."'" : ''; $searchsql .= !empty($_POST['enddate'] )? " AND dateline > '".strtotime($_POST['enddate'])."'" : ''; $searchsql.=!empty($_POST['views'])? " AND views ".$_POST['views'] : ''; $squery=$DB->query($searchsql); $multipage=''; $articledb = array(); while ($article = $DB->fetch_array($squery)) { if ($article['attachments']) { $article['attachments'] = count(unserialize($article['attachments'])); $article['attachment'] = '<a href="{$admin_url}?file=attachment&action=list&aid='.$article['aid'].'">操作</a>('.$article['attachments'].')'; } else { $article['attachment'] = '<a href="{$admin_url}?file=attachment&action=list&aid='.$article['aid'].'"><span class="yes">上传</span></a>'; } $article['dateline'] = date('Y-m-d H:i',$article['dateline']); $articledb[] = $article; } $total=count($articledb); } else redirect('请指定搜索条件', $admin_url.'?file=article&action=list'); break; default: redirect('未定义操作', $admin_url.'?file=article&action=list'); } } else { if($action=='add'||$action=='mod') { $attachdb=array();//上传的附件数据 $aid=isset($_GET['aid'])?intval($_GET['aid']):0; $article=$DB->fetch_first('Select * from '.DB_PREFIX."article where aid=$aid"); $time=empty($article['dateline'])?time():$article['dateline']; $time=date("Y-m-d-H-i-s",$time); list($newyear,$newmonth,$newday,$newhour,$newmin,$newsec)=explode('-',$time); //类别 if(!$article) { $stick_check=''; $visible_check='checked'; $tdtitle='添加内容'; } else { $cindex=ceil($article['aid']/500000); $content=$DB->fetch_first('Select * from `'.DB_PREFIX."content{$cindex}` where articleid={$aid}"); $article=array_merge($article, $content); $tdtitle='编辑内容'; $stick_check=$article['stick']?'checked':''; $aquery=$DB->query("Select * from ".DB_PREFIX."attachment where articleid=$aid"); while($ath=$DB->fetch_array($aquery)) { $ath['dateline']=date('Y-m-d',$ath['dateline']); $ath['filesize']=sizecount($ath['filesize']); $attachdb[]=$ath; } } } else if($action=='list') { $searchsql=''; $addquery=''; $pagelink=''; $view=isset($_GET['view'])?$_GET['view']:''; $tag=isset($_GET['tag'])?$_GET['tag']:''; $cid=isset($_GET['cid'])?intval($_GET['cid']):''; if ($view == 'stick') { $addquery = " AND a.stick='1'"; $pagelink = '&view=stick'; } elseif ($cid) { $cate = $DB->fetch_first("SELECT name FROM ".DB_PREFIX."category WHERE cid='$cid'"); $addquery = " AND a.cateid='$cid'"; $pagelink = '&cid='.$cid; } else $addquery = ""; if($page) { $start_limit = ($page - 1) * 30; } else { $start_limit = 0; $page = 1; } $articledb = array(); if(empty($tag)) { $rs = $DB->fetch_first("SELECT count(*) AS articles FROM ".DB_PREFIX."article a WHERE 1 $searchsql $addquery"); $total = $rs['articles']; $multipage = multi($total, 30, $page, $admin_url.'?file=article&action=list'.$pagelink); $query = $DB->query("SELECT a.*,c.name as cname FROM ".DB_PREFIX."article a LEFT JOIN ".DB_PREFIX."category c ON c.cid=a.cateid WHERE 1 $searchsql $addquery ORDER BY a.aid DESC LIMIT $start_limit, 30"); } else { $item = addslashes($tag); $tagaids=gettagids($item); if($tagaids) { $query=$DB->query('Select a.*,c.name as cname from '.DB_PREFIX."article a LEFT JOIN ".DB_PREFIX."category c ON c.cid=a.cateid where a.aid in ($tagaids)"); $tagarr=explode(',',$tagaids); $total=count($tagarr); } else { redirect('标签不存在', $admin_url.'?file=article&action=list'); } $pagelink = '&tag='.urlencode($item); $multipage = multi($total, 30, $page, $admin_url.'?file=article&action=list'.$pagelink); $subnav = 'Tags:'.$item; } while ($article = $DB->fetch_array($query)) { if ($article['attachments']) { $article['attachments'] = $article['attachments']; $article['attachment'] = '<a href="{$admin_url}?file=attachment&action=list&aid='.$article['aid'].'">操作</a>('.$article['attachments'].')'; } else { $article['attachment'] = '<a href="{$admin_url}?file=attachment&action=list&aid='.$article['aid'].'"><span class="yes">上传</span></a>'; } $article['dateline'] = date('Y-m-d H:i',$article['dateline']); $articledb[] = $article; } unset($article); $DB->free_result($query); } } ?>